package producto;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Test;

public class OfertaTest {
	
	Presentacion presentacionMock01 = mock(Presentacion.class);
	Producto miProducto01 = new Producto(presentacionMock01,"","","","");
	
	Presentacion presentacionMock02 = mock(Presentacion.class);
	Producto miProducto02 = new Producto(presentacionMock02,"","","","");
	
	Pedido miPedidoMock01 = mock(Pedido.class);
	
	Pedido unPedido = new Pedido();
	
	Oferta unaOferta01 = new Oferta(10,50,miProducto01);
	Oferta unaOferta02 = new Oferta(10,50,unaOferta01);
	Oferta unaOferta03 = new Oferta(10,50,miPedidoMock01);
	
	Oferta unaOferta04;
	
	
	@Before
	public void setUp(){
		/*
		when(presentacionMock01.getPrecioDeVenta()).thenReturn(10.0);
		when(presentacionMock02.getPrecioDeVenta()).thenReturn(40.0);
		*/
		when(miPedidoMock01.precioDeVentaTotal()).thenReturn(100.0);
		when(miProducto01.precioUnitarioDeVenta()).thenReturn(100.0);
		
		when(miProducto01.getCantidadEnStock()).thenReturn(5);
		when(miProducto02.getCantidadEnStock()).thenReturn(2);
		
		unPedido.agregar(miProducto01);
		unPedido.agregar(miProducto02);
		
		unaOferta04 = new Oferta(10,50,unPedido);
	}

	@Test
	public void testPrecioUnitarioDeVentaOferta1Producto() {
		assertEquals(50,unaOferta01.precioUnitarioDeVenta(),.01);
	}
	@Test
	public void testPrecioUnitarioDeVentaOferta1Ofertao() {
		assertEquals(25,unaOferta02.precioUnitarioDeVenta(),.01);
	}
	@Test
	public void testPrecioUnitarioDeVentaOferta1Pedido(){
		assertEquals(50,unaOferta03.precioUnitarioDeVenta(),.01);
	}
	@Test
	public void testGetCantidadEnStock1(){
		//con 1 producto funciona siendo el stock mayor o menor a las ofertas
		assertEquals(5,unaOferta01.getCantidadEnStock());
	}
	@Test
	public void testGetCantidadEnStock2(){
		//con 2 productos en la oferta?
		assertEquals(2,unaOferta04.getCantidadEnStock());
	}
	

}
